/**
 * Created by no1 on 2015/11/3.
 */

'use strict';

console.log('Load O2O: ' + module.id);
let F = require('./function');
let C = require('../config');
let Dao = require('./dao');
let sellPermissionDispatcher = new Dao.sellPermission
let sellRoleDispatcher = new Dao.sellRole();
let sellUserDispatcher = new Dao.sellUser();

function* api() {

}
exports.api = api;

/**
 * 添加权限项目
 * @param Env
 */
api.permissAdd = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellPermissionDispatcher.add(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};

/**
 * 更新权限项目
 * @param Env
 */
api.permissUpdate = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  //let ret = yield sellPermissionDispatcher.list(fields);
  //if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  //return F.returnMsg(200, ret.msg, 3, ret.data);
  return F.returnMsg(200, '开发中', 3);
};

/**
 * 查询权限项目
 * @param Env
 */
api.permissList = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellPermissionDispatcher.list(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};


/**
 * 添加角色
 * @param Env
 */
api.roleAdd = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellRoleDispatcher.add(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};

/**
 * 初始化添加系统提供的角色
 * 添加 管理员 店长 运营 客服,其中管理员有所有权限,管理员和店长不可删除
 * @param Env
 */
api.rolesAddByInit = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellRoleDispatcher.addByinit(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};

/**
 * 修改角色
 * @param Env
 */
api.roleUpdate = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellRoleDispatcher.update(fields);

  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);

};

/**
 * 查看角色列表
 * @param Env
 */
api.roleList = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellRoleDispatcher.list(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);

};

/**
 * 查看角色
 * @param Env
 */
api.roleDetail = function*(Env) {
  Env.I = yield F.Init(Env, [1, 2, 3]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellRoleDispatcher.detail(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};


/**
 * 添加后台用户
 * @param Env
 */
api.userAdd = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellUserDispatcher.add(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);

  return F.returnMsg(200, ret.msg, 3, ret.data);

};

/**
 * 更新后台用户
 * @param Env
 */
api.userUpdate = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellUserDispatcher.update(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
};
/**
 * 更新关联表的用户信息
 * @param Env
 */
api.updateUserInfo = function*(Env) {
  Env.I = yield F.Init(Env, [1]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellUserDispatcher.updateUserInfo(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);
}

/**
 * 查看后台用户列表
 * @param Env
 */
api.userList = function*(Env) {
  Env.I = yield F.Init(Env, [1, 2, 3]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret
  if (fields.act == 3) ret = yield sellUserDispatcher.listByQut(fields);
  else ret = yield sellUserDispatcher.list(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3);
  return F.returnMsg(200, ret.msg, 3, ret.data);

};

/**
 * 查看后台用户
 * @param Env
 */
api.userDetail = function*(Env) {
  Env.I = yield F.Init(Env, [1, 2]);
  if (Env.I.errors) {
    return F.returnMsg(400, Env.I.errors.msg, Env.I.errors.level);
  }
  let fields = Env.I;
  let ret = yield sellUserDispatcher.detail(fields);
  if (ret.error == 1) return F.returnMsg(400, ret.msg, 3, ret.data);
  return F.returnMsg(200, ret.msg, 3, ret.data);

};